/**
 * org.assess.oa.system.dao.TbMenuDAO
 */
package org.assess.oa.system.dao;

import java.util.List;
import java.util.Map;

import org.assess.oa.system.bean.TbMenu;

/**
 * @description 操作菜单表的DAO接口
 * @author XiaLongxiang
 * @createtime 2012-6-5 上午9:28:50
 */
public interface TbMenuDAO {
    /**
     * 根据菜单ID查询指定的菜单信息
     * @param menu_id
     * @return
     */
    public TbMenu queryTbMenuById(String menu_id);
    
    /**
     * 根据条件查询菜单信息
     * @param parameters
     * @return
     */
    public List<TbMenu> queryTbMenuAsList(Map<String, Object> parameters);
    
    /**
     * 根据条件查询菜单信息，查询条件中包含了角色ID，对于如果该角色与菜单信息有映射关系，那么TbMenu对象的role_menu_id字段将不为空
     * @param parameters
     * @return
     */
    public List<TbMenu> queryTbMenuAsPermissionList(Map<String, Object> parameters);
    
    /**
     * 根据条件递归查询菜单信息
     * @param parameters
     * @return
     */
    public List<TbMenu> queryTbMenuAsListByStartProir(String menu_id);
    
    /**
     * 根据用户编码和系统编码查询该用户在本系统中所拥有的菜单权限信息
     * @param parameters
     * @return
     */
    public List<TbMenu> queryTbMenuAsListByUserAndSystem(Map<String, Object> parameters);
    
    /**
     * 插入菜单信息
     * @param menu
     * @return
     */
    public boolean insert(TbMenu menu);
    
    /**
     * 修改菜单信息
     * @param menu
     * @return
     */
    public boolean update(TbMenu menu);
    
    /**
     * 根据菜单ID删除指定的菜单信息
     * @param menu_id
     * @return
     */
    public boolean deleteTbMenuById(String menu_id);
}
